using System.ComponentModel;
using DevExpress.XtraEditors.DXErrorProvider;

namespace QLTB.BusinessObjects
{
    /// <summary>
    /// Project: NNS System 
    /// Generated Class for Table : TBL_nhanvien.
    /// Date: 01/06/2010
    /// Author: Trần Hoàng Tâm
    /// </summary>
    public class TBL_nhanvien : IDXDataErrorInfo
    {
        #region Init

        private string m_hoten;
        private int m_id;
        private int? m_idchucdanh;
        private int? m_iddonvi;
        private int? m_idnhom;
        private string m_matkhau;
        private string m_tenuser;
        private bool m_toantinh;

        public TBL_nhanvien()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public TBL_nhanvien(
            int id,
            int iddonvi,
            string tenuser,
            string matkhau,
            string hoten,
            int idchucdanh,
            int idnhom,
            bool toantinh)
        {
            //
            // TODO: Add constructor logic here
            //
            SetData
                (
                    id,
                    iddonvi,
                    tenuser,
                    matkhau,
                    hoten,
                    idchucdanh,
                    idnhom,
                    toantinh
                );
        }


        public void SetData(
            int id,
            int iddonvi,
            string tenuser,
            string matkhau,
            string hoten,
            int idchucdanh,
            int idnhom,
            bool toantinh)
        {
            //
            // TODO: Add constructor logic here
            //
            m_id = id;
            m_iddonvi = iddonvi;
            m_tenuser = tenuser;
            m_matkhau = matkhau;
            m_hoten = hoten;
            m_idchucdanh = idchucdanh;
            m_idnhom = idnhom;
            m_toantinh = toantinh;
        }

        #endregion

        #region Property

        [DisplayName("id")]
        [Category("Primary Key")]
        public int id
        {
            get { return m_id; }
            set { m_id = value; }
        }

        [DisplayName("iddonvi")]
        [Category("Column")]
        public int? iddonvi
        {
            get { return m_iddonvi; }
            set { m_iddonvi = value; }
        }

        [DisplayName("tenuser")]
        [Category("Column")]
        public string tenuser
        {
            get { return m_tenuser; }
            set { m_tenuser = value; }
        }

        [DisplayName("matkhau")]
        [Category("Column")]
        public string matkhau
        {
            get { return m_matkhau; }
            set { m_matkhau = value; }
        }

        [DisplayName("hoten")]
        [Category("Column")]
        public string hoten
        {
            get { return m_hoten; }
            set { m_hoten = value; }
        }

        [DisplayName("idchucdanh")]
        [Category("Column")]
        public int? idchucdanh
        {
            get { return m_idchucdanh; }
            set { m_idchucdanh = value; }
        }

        [DisplayName("idnhom")]
        [Category("Column")]
        public int? idnhom
        {
            get { return m_idnhom; }
            set { m_idnhom = value; }
        }

        [DisplayName("toantinh")]
        [Category("Column")]
        public bool toantinh
        {
            get { return m_toantinh; }
            set { m_toantinh = value; }
        }

        #endregion

        #region IDXDataErrorInfo Members

        public void GetPropertyError(string propertyName, ErrorInfo info)
        {
            switch (propertyName)
            {
                case "tenuser":
                    if (IsStringEmpty(tenuser))
                    {
                        SetErrorInfo(info, "Tài khoản không hợp lệ!", ErrorType.Critical);
                    }
                    break;

                case "hoten":
                    if (IsStringEmpty(hoten))
                    {
                        SetErrorInfo(info, "Họ và tên không hợp lệ!", ErrorType.Critical);
                    }
                    break;
                case "iddonvi":
                    if (iddonvi == null)
                    {
                        SetErrorInfo(info, "Đơn vị không hợp lệ!", ErrorType.Critical);
                    }
                    break;
                case "idchucdanh":
                    if (idchucdanh == null)
                    {
                        SetErrorInfo(info, "Chức danh chưa được chọn!", ErrorType.Warning);
                    }
                    break;
                case "idnhom":
                    if (idnhom == null)
                    {
                        SetErrorInfo(info, "Quyền truy cập chưa được chọn!", ErrorType.Warning);
                    }
                    break;
                case "toantinh":
                    break;
            }
        }

        public void GetError(ErrorInfo info)
        {
        }

        #endregion

        public void GetPropertyError(TBL_nhanvienFields propertyName, ErrorInfo info)
        {
            var num = new TBL_nhanvienFields();
            num = propertyName;

            switch (num)
            {
                case TBL_nhanvienFields.id:

                    break;
                case TBL_nhanvienFields.iddonvi:
                    break;
                case TBL_nhanvienFields.tenuser:
                    break;
                case TBL_nhanvienFields.matkhau:
                    break;
                case TBL_nhanvienFields.hoten:
                    break;
                case TBL_nhanvienFields.idchucdanh:
                    break;
                case TBL_nhanvienFields.idnhom:
                    break;
                case TBL_nhanvienFields.toantinh:
                    break;
            }
        }

        private bool IsStringEmpty(string str)
        {
            return (!string.IsNullOrEmpty(str) && str.Trim().Length == 0);
        }

        private void SetErrorInfo(ErrorInfo info, string errorText, ErrorType errorType)
        {
            info.ErrorText = errorText;
            info.ErrorType = errorType;
        }
    }

    #region Enum Fields

    public enum TBL_nhanvienFields
    {
        id,
        iddonvi,
        tenuser,
        matkhau,
        hoten,
        idchucdanh,
        idnhom,
        toantinh
    }

    #endregion
}